#include "coro.h"
#include <stdio.h>
#include <iostream>

void C(void* arg){
    puts("---C函数运行前半段---");
    puts("---C函数运行后半段---");
}

void B(void* arg){
    puts("---B函数运行前半段---");
    int id=coro_create((schedule_t*)arg,C,arg);
    coro_resume((schedule_t*)arg,id);
    puts("---B函数运行后半段---");
}

void A(void *arg){
    puts("---A函数运行前半段---");
    coro_yield(*(schedule_t*)arg);
    int id=coro_create((schedule_t*)arg,B,arg);
    coro_resume((schedule_t*)arg,id);
    puts("---A函数运行后半段---");
}

void schedule_test()
{
    schedule_t* s = sch_open(128*1024);

    int id_1=coro_create(s,A,s);
    coro_resume(s,id_1);
    
    puts("main函数恢复A函数执行");
    coro_resume(s,id_1);

    sch_close(s);
}

int main(){
    schedule_test();
    return 0;
}